In a cloud computing environment, computing is delivered as a service rather than a product, whereby shared resources, software and information are provided to computers and other devices as a metered service over a network, such as the Internet. In such an environment, computation, software, data access and storage services are provided to users that do not require knowledge of the physical location and configuration of the system that delivers the services.
In a virtualized computer environment, such as may be implemented in a physical cloud computing node of the cloud computing environment, the virtualized computer environment includes a virtual operating system. The virtual operating system includes a common base portion and separate user portions that all run on a physical computer. The physical computer is referred to as a host. The common base portion may be referred to as a hypervisor and each user portion may be called a guest. Each guest is a virtual machine of physical resources of the computer. A guest operating system runs on each guest, and the guest appears to the guest operating system as a real computer. Each guest operating system may host one or more virtual machines.
Currently, cloud providers (manage the infrastructure of the cloud computing environment and platforms on which the applications run) provide multiple levels of services to their customers, such as providing the customers an option of sizing a virtual machine, which determines the number of processing units or cores, the memory capacity and the local file system size that is allocated to a running instance. For example, a virtual machine size of “extra small” may have a shared processor core and a memory capacity of 768 MB. A virtual machine size of “small” may have one processor core and a memory capacity of 1.75 GB. A virtual machine size of “medium” may have two processor cores and a memory capacity of 3.5 GB. A virtual machine size of “large” may have four processor cores and a memory capacity of 7 GB. A virtual machine size of “extra large” may have eight processor cores and a memory capacity of 14 GB. If a customer desires to modify the size of the virtual machine, such as by upgrading to a larger size, a new instance of the application is deployed with the new virtual machine characteristics.
Prior to deploying the new instance of the virtual machine to the production environment, the new instance of the virtual machine may first be tested in a development or test environment. The virtual machine to be tested in the development environment is created with the size that will be used in the production environment. As a result, the virtual machine will be tested in the development environment using the same number of physical resources as will be used in the production environment. For instance, referring to the above example, if the customer upgraded the size of the virtual machine from a “small” to an “extra large,” then the new virtual machine will be tested using eight physical processor cores. After the new instance of the virtual machine has been tested and verified that it works properly, all user traffic will be switched from being serviced by the old instance of the virtual machine to being serviced by the new instance of the virtual machine.
However, by testing the new instance of the virtual machine in the development environment with the same number of physical resources as used in the production environment, a substantial amount of hardware resources (e.g., processor cores, memory) is being consumed to test the new instance of the virtual machine. If a smaller number of physical resources could be used to effectively test the new instance of the virtual machine in the development environment that corresponds to the production environment, then those physical resources may be used for other services thereby more efficiently utilizing the physical resources available on the physical cloud computing node.